自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 《Java编程思想》读书笔记1--感受

    很厚的一本书,在大一末的时候导师推荐了这本书,在学校怀着完成学业的目的读完它。2016年,工作之后,发现真正写代码的时候,很多都是一知半解。比如,容器和泛型应该怎么用,并发该怎么写,异常该如何处理,IO的框架是怎么回事。不过,总算知道这些东西的存在。又花了半年的时间,第二遍。这次,带着问题有目的性地把相应的章节仔细地重读了一遍。工作中的问题得到顺利解决了,但是好奇心没有得到充分的满足,很多...

2018-09-10 18:39:48 621

转载 java乱码解决之道(九)—–总结

乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到这个令人讨厌的问题,虽然是小问题但又不得不解决。在这个系列博文中LZ并没有阐述归纳乱码的方法,出现乱码的原因各式各样但根本原因就是编码转换过程中的格式不一样,所以我们只需要了解了java在运行过程中是...

2018-07-08 15:40:52 155

转载 java中文乱码解决之道(八)—–解决URL中文乱码问题

我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?有!这里我主要提...

2018-07-08 15:38:55 213

转载 java中文乱码解决之道(七)—–JSP页面编码过程

我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的。在JSP转换为servlet过程中下面一段代码起到至关重要的作用。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK" %>在上面代码中有两个地方存在编码:pageEncoding、content...

2018-07-08 15:32:42 156

转载 java中文乱码解决之道(六)—–javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO、内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的。对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分。首先我们来看在javaWeb中有哪些地方存在编码转换操作。编码&解码通过下图我们可以了解在javaWeb中有哪些地方有转码:用户想服务器发送一个...

2018-07-08 15:29:34 145

转载 java中文乱码解决之道(五)—–java是如何编码解码的

在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码和解码操作的。编码&解码在上篇博客中LZ阐述了三个渠道的编码转换过程,下面LZ将结束java在那些场合需要进行编码和解码操作,并详序中间的过程,进一步掌握java的编码和解码过程。在java中...

2018-07-08 15:22:17 132

转载 java中文乱码解决之道(四)—–java编码转换过程

前面三篇博客侧重介绍字符、编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的。但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何产生的、存在哪些乱码的情况、该如何从根本上解决乱码问题。各位随博主一起征服令人厌烦的java乱码问题吧!!!java编码转换过程我们总是用一个java类文件和用户进行最直接的交互(输入、输出),这些交...

2018-07-04 20:50:17 136

转载 java中文乱码解决之道(三)—–编码详情:伟大的创想—Unicode编码

随着计算机的发展、普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号。为了解决这种不兼容的问题,伟大的创想Unicode编码应时而生!!UnicodeUnicode又称为统一码、万国码、单一码,它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码...

2018-07-04 20:45:00 275 1

转载 java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集、字符编码等基础知识和ASCII、GB的详情。一、基础知识在了解各种字符集之前我们需要了解一些最基础的知识,如:编码、字符、字符集、字符编码基础知识。编码计算机中存储的信息都是用二进制表示的,我们在屏幕上所看到文字、图片等都是通过二进制转换的结果。编码是...

2018-07-04 20:38:20 210

转载 java中文乱码解决之道(一)—–认识字符集

java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.com来解决问题。阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有一个清晰明了的认识,于是LZ想通过这系列博文(估计只有几篇)来彻底分析、解决java中文乱码问题,如有错误之处望各位同仁指出!当然,此系列博文并非LZ完全原创,都是在前辈基础上总结,归纳...

2018-07-04 20:31:59 255

转载 MacBook常用快捷键

Ctrl+A:到行首(达到Home键的效果)Ctrl+E:到行尾(达到End键的效果)Ctrl+N:到下一行Ctrl+P:到上一行Ctrl+K:从光标处开始删除,直到行尾 fn键+左方向键是HOMEfn键+右方向键是ENDfn+上方向键是page upfn+下方向键是page down转至:https://blog.csdn.net/llianlianpay/article/details/802...

2018-07-03 20:30:44 2813

转载 ActiveMQ RabbitMQ RocketMQ KafKa对比

ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还是可以的,比较清晰的反馈了这三个的具体情况已经使用场景,具体的对比如下:1)TPS比较:Kafka最高,RabbitMq 次之, ActiveMq 最差。2)吞吐量对比:kafka具有高的吞吐量,内部采用消息的批量处理,ze...

2018-07-02 19:54:52 4739

原创 系统间通信知识点总结

1.信息格式常用的信息格式包括:XML: 可扩展标记语言,这个语言由W3C(万维网联盟)进行发布和维护。XML语言应用之广泛,扩展之丰富。适合做网络通信的信息描述格式(一般是“应用层”协议了)。例如Google 定义的XMPP通信协议就是使用XML进行描述的;不过XML的更广泛使用场景是对系统环境进行描述(因为它会造成较多的不必要的内容传输),例如服务器的配置描述、Spring的配置描述、Mave...

2018-07-02 19:35:29 298

转载 5种网络IO模型(有图,很清楚)

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不...

2018-06-21 19:18:28 19079

转载 5种IO模型和5种通信模式

操作系统的五种通信模型1、阻塞I/O就是我们常见的socket,监听端口收到消息进行处理,并把结果返回给客户端执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示,程序继续执行2、非阻塞I/O非阻塞IO通过进程反复调用IO函...

2018-06-21 19:16:41 3439

转载 网络IO和磁盘IO详解

1. 缓存IO        缓存I/O又被称作标准I/O,大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。       读操作:操作系统检查内核的缓冲区有没有需要的数据,如果已经缓存了,那么就直接从缓存中返回;否则从磁盘中读取,然后缓存在操作系统的缓存中。       写操作:将数据从...

2018-06-21 19:07:16 9266

转载 linux 同步IO: sync、fsync与fdatasync

        传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed writ...

2018-06-21 18:32:19 264

转载 Hadoop NameNode 高可用 (High Availability) 实现解析

NameNode 高可用整体架构概述在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包括...

2018-06-04 18:35:29 137

转载 java锁总结

之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是...

2018-06-01 17:20:31 4560 1

转载 Java并发编程:线程池的使用

在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?     在Java中可以通过线程池来达到这样的效果。今...

2018-05-12 11:06:01 127

转载 Java多线程之ReentrantLock与Condition

一、ReentrantLock1、ReentrantLock简介     ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JV...

2018-05-12 10:01:02 122

转载 Java多线程(十)——线程优先级和守护线程

一、线程优先级的介绍     java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。     java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明该线程是“用户线程”;否则就是“守护线程”。用户线程一般用于执行用户级任务,而守护线程也就是“后台线程”,一般用来执行后台任务。需要注意的是...

2018-05-10 19:27:02 159

转载 Java多线程(九)—— interrupt()和线程终止方式

一、interrupt() 说明interrupt()的作用是中断本线程。本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(...

2018-05-10 19:18:42 152

转载 Java多线程(八)——join()

一、join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:// 主线程public class Father extends Thread { public void run() { Son s = new Son(); s.start...

2018-05-10 19:12:18 140

转载 Java多线程(七)——线程休眠

一、sleep()介绍sleep() 定义在Thread.java中。sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻塞状态”变成“就绪状态”,从而等待cpu的调度执行。二、sleep()示例下面通过一个简单示例演示sleep()的用法。package c...

2018-05-10 19:09:23 115

转载 Java多线程(六)——线程让步

一、yield()介绍    yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!二、yield()示例下面,通过示例查看它的用法。package com.demo.Thread;pu...

2018-05-10 19:05:12 163

转载 Java多线程(五)——线程等待与唤醒

一、wait()、notify()、notifyAll()等方法介绍     在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAl...

2018-05-10 19:01:26 88

转载 Java多线程(四)—— synchronized关键字续

1、synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互斥的。也就是说,某时间点,对象的同步锁只能被一个线程获取到!通过同步锁,我们就能在多线程中,实现对“对象/方法...

2018-05-10 18:54:20 104

转载 Java多线程(三)—— synchronized关键字详解

一、多线程的同步1、为什么要引入同步机制在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。2、程序实例用一个取钱的程序例子,来说明为什么需要引入同步。在使用同步机制前,整体程序如下:package com.demo;pub...

2018-05-09 20:26:37 103

转载 Java多线程(二)——常用的实现多线程的两种方式

一、继承Thread类创建线程类     Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Thread类的声明如下:public class Thread implements Runnable {}可以看到,Thread本身就实现了Runn...

2018-05-09 19:18:53 122

转载 Java多线程(一)多线程基础

一、进程     进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中,几乎所有运行中的任务对应一条进程(Process)。一个程序进入内存运行,即变成一个进程。进程是处于运行过程中的程序,并且具有一定独立功能。描述进程的有一句话非常经典——进程是系统进行资源分配和调度的一个独立单位。  进程是系统中独立存在的实体,拥有自己独立的资源,拥有自己...

2018-05-09 19:11:34 122

翻译 jdk各版本特性

对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。JDK Version 1.1于1997-02-19发行.新特性包括:引入JDBC(Java DataBase Connectivity);支持内部类;引入Java Bean;引入RMI(Remote Method Invocation);引...

2018-05-07 20:05:53 422

原创 Kubernetes知识点总结

whatKubernetes是一个全新的基于容器技术的分布式架构领先方案(源于Brog,是google十几年经验的结晶);Kubernetes是一个开放的开发平台(无侵入性,现有系统很容器迁移到Kubernetes上);Kubernetes是一个完备的分布式系统支撑平台(完善的集群管理能力)。why使用Kubernetes最直接的感受就是我们可以轻装上阵的开发复杂的系统了;其次Kubernetes...

2018-05-02 21:01:39 608

原创 基于Docker的多容器应用栈

本文搭建一个基于docker容器的简单应用,部分参考《第一本Docker书》。在本例中,我们会构建一系列的镜像来支持部署多容器的应用。一个Node容器,用来服务于Node应用,这个容器会连接到。一个Redis主容器,用于保存和集群化应用状态,这个容器会连接到。两个Redis副本容器,用于集群化应用状态。一个日志容器,用于捕获应用日志。项目相关文件结构99-1-190-96:dockerlearn ...

2018-05-02 20:01:45 269

转载 Dockerfile用法详解

制作Docker image 有两种方式:一是使用 Docker container,直接构建容器,再导出成 image 使用;二是使用 Dockerfile,将所有动作写在文件中,再 build 成 image。Dockerfile 的方式非常灵活,推荐使用。一.Dockerfile 基本结构一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。’...

2018-05-02 19:17:41 5440

翻译 Docker学习笔记

docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由Docker公司团队编写,给予Apache2.0开源授权协议发行。Docker组件Docker客户端和服务器;Docker镜像;Docker容器;Registry。Docker安装下载地址:https://download.docker.com/mac/stable/Docker.dmg然后安装图形界面提示一步一步安装即可。Dock...

2018-05-02 19:08:53 131

转载 Git基础教程

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,也算是程序员必备技能了。Git工作流程一般工作流程如下:克隆 Git 资源作为工作目录。在克隆的资源上添加或修改文件。 如果其他人修改了,你可以更新资源。在提交前查看修改。提交修改。在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。流程图如下:Git工作区、暂存区一级版本库我们先来理解下Git 工作区、暂存区和版本...

2018-04-27 20:44:01 103

原创 tensorflow_serving离线安装-求助

圈友们,你们好。最近我在高机器学习,训练出来的模型需要发布到TensorFlow serving中,以供外部调用。我现在遇到的问题是:公司内网不能连GitHub外部网站,导致以源码编译方式安装TensorFlow serving环境时报如下错误,求助求助~谢谢大家了D:\ProgramFiles\serving-master>bazel build -c opt tensorflow_ser...

2018-03-15 19:45:53 800

图的基本操作算法并用高级语言实现 C/C++语言源代码

1.深度优先遍历(Depth-First Traversal) 假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。 2.广度优先遍历 1)从图中某个顶点V0出发,并访问此顶点; 2)从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点; 3)重复步骤2,直到全部顶点都被访问为止。 3. prim算法 假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树: 1)初始化:U={u 0},TE={f}。此步骤设立一个只有结点u 0的结点集U和一个空的边集TE作为最小生成树的初始形态,在随后的算法执行中,这个形态会不断的发生变化,直到得到最小生成树为止。 2)在所有u∈U,v∈V-U的边(u,v)∈E中,找一条权最小的边(u 0,v 0),将此边加进集合TE中,并将此边的非U中顶点加入U中。此步骤的功能是在边集E中找一条边,要求这条边满足以下条件:首先边的两个顶点要分别在顶点集合U和V-U中,其次边的权要最小。找到这条边以后,把这条边放到边集TE中,并把这条边上不在U中的那个顶点加入到U中。这一步骤在算法中应执行多次,每执行一次,集合TE和U都将发生变化,分别增加一条边和一个顶点,因此,TE和U是两个动态的集合,这一点在理解算法时要密切注意。 3)如果U=V,则算法结束;否则重复步骤2。可以把本步骤看成循环终止条件。我们可以算出当U=V时,步骤2共执行了n-1次(设n为图中顶点的数目),TE中也增加了n-1条边,这n-1条边就是需要求出的最小生成树的边。 4.Kruskal算法 假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林。之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类推,直至森林中只有一棵树,也即子图中含有 n-1条边为止。

2014-04-29

数据结构 C语言版 线性表的动态存储结构之链表实现

这是我上数据结构课时写的,在学线性表时,老师让我们写动态存储结构的线性表,所以我就写了这个链表

2013-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除