通过echo 传输参数到shell 脚本中如何获取获取 需求: 提供一个shell 脚本用于用户登录,入参为 用户名和密码,由于保密需要,密码必需通过echo 方式传递,不能接在脚本后面当入参。 现在我们在模仿这个登录,设计思路是这样的: 通过echo 传输密码,用户名没有保密要求,接在脚本后的入参中; 在shell 脚本中设计两个逻辑:一是 用户名如果是admin 则默认不需要输入密码也能登录; ...
多线程处理任务并获取任务结果 突然记起以前遇到的一个面试的问题,所以想写写。问题大概意思是这样的:一个任务需要启动多个线程去处理,如果获取每个线程的执行结果呢?实现方式是 Callable + FutureCallable 是一个要去实现的线程接口,用该接口去实现一个线程的好处是,它的要求你去覆盖的call方法会带一个返回值,我们获取的线程结果就是从这个返回值中取的。Future 可以说是Cal...
Shell 命令学习-02 2>&1 /dev/null 表示空设备文件; 可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 0 表示stdin标准输入; 1 表示stdout标准输出; 2 表示stderr标准错误。 2>&1 的意思就是将标准错...
Shell 命令学习-01 && command1 && command2 [&& command3 ...] 只有在&&左边的命令返回真时,&&右边的命令才会被执行下去 只要有一个命令返回假,后面的命令就不会被执行 想:所有&&连接的条件,只要发现有一个假的话,就不必要执行下去了,因为最终结果...
Markdown 语法 对于程序员来说,不会使用Markdown 来编写文本感觉说不过去,所以在此总结一下常用到的一些语法。标题 这个应该是最好记,也是频率最高的了。# 一个#表示一级标题,两个#表示两级,经此类推,最高应该是支持六级。一般来说#后都要加个空格,再到文字内容。加粗字体 文字左右分别加两个*,即 **内容** 。倾斜字体 文字左右分别加一个*,即*内容* ...
Markdown 语法 对于程序员来说,不会使用Markdown 来编写文本感觉说不过去,所以在此总结一下常用到的一些语法。标题 这个应该是最好记,也是频率最高的了。# 一个#表示一级标题,两个#表示两级,经此类推,最高应该是支持六级。一般来说#后都要加个空格,再到文字内容。加粗字体 文字左右分别加两个*,即 **内容** 。倾斜字体 文字左右分别加一个*,即*内容* ...
Python学习简录01 1.资源1.1网站https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c0002.简介一种解释型语言在运行时才一行一行的解释成CPU认识的机器语言,所以相比C这种运行前已编译好的语言来说,有些耗时。运行需要python解释器支持CPython使用最广泛的,官方的...
Java 对Double 类型四舍五入 下面简单给出三种:个人喜欢第一种,比较灵活,保留多少位很方便设置import java.math.RoundingMode;import java.text.NumberFormat;public class TestMain { public static void main(String [] args){ Double d = 56.3...
springboot 的属性加载顺序 1.在命令行中设置的参数。2.SPRING_APPLICATION_JSON 中的属性。SPRING_APPLICATION_JSON 是以 JSON 格式配置在系统环境变量中的内容。3.java:comp/env 中的JDNI属性。4.java的系统属性,可以通过System.getProperties()获得的内容。5.操作系统的环境变量。6.通过 random.*配置的随...
springboot 应用打包及启动命令 maven 打jar 包首先pom.xml文件中需要有这么一个配置1.使用IDEA中的maven工具打包:在一连串下载后得出说明打包成功 2.使用 mvn package 命令打包:可以利用IDEA 的 Terminal ,其默认的路径就是在工程目录下,直接执行mvn package 即可 启动jar 包还是在Terminal中,需要进入到jar...
解决@Value("${name}")获取application.properties中定义的参数中文乱码的问题 application.properties中参数如图:pom.xml中设置如图 但代码import org.springframework.web.bind.annotation.RestController;@RequestMapping("/hello")@RestControllerpublic class HelloController {...
反射包 java.lang.reflect⑦ 之 Java 中 Proxy 动态代理类 探秘(三) 这个系列好久没有续作了,你以为完了,错了。这个动态代理有说不完的知识点,我也是在不断的学习中才了解得到更多的知识。但无可否认的一点是它需更多其他的知识的支持,比如设计模式,设计思想。工作越久越觉得设计模式这个东西的重要性。 其实动态代理的前两个例子只是简单的列出了它的一个demo而已,实际工作中写代码也不会是这么写的,当然知识点还是用到这么一点。实际中所使用的是结合更复杂的业务来实现的。接...
在IDEA中创建一个工程后要放到git仓库中 1)首先是使用IDEA 创建一个你需要的工程(如何创建和创建什么样的工程不是这里的内容,略)。2)工程创建好后对工程右键是没有Git 选项的。如图这时,我们可以在Terminal对话框里输入命令:git init来初始化一个本地的git 仓库。如图这时查看工程目录下会多了一个.git文件夹。如图也可以在工具栏VCS-->Import Into Versio...
docker 创建 jdk 镜像 1.楔子:操作环境:ubuntu ;准备的材料:1)centos 最新镜像 ;2)linux 版本的 jdk-8u181-linux-x64.tar.gz 压缩包;3)一个springboot 工程的jar 包 ;git代码地址:https://github.com/mottohlm/springmvctest 该地址即为jar包的项目所在,可下载该项目然后用m...
Dockerfile 常用指令 1.ADD 复制文件ADD … ADD [“”,… “”]从src目录复制文件到容器的dest。src 可以是Dockerfile 的相对路径,也可以是一个URL,还可以是一个压缩包。压缩包的话可以在复制后自动解压.2.ARG 设置构建参数用于设置构建参数,设置构建时的环境变量,在容器运行时是不会存在这些变量的。3.CMD 容器启动命令用于执行容器提供的默...
shell 基础 #变量定义变量:param_name="my.param"注意点:变量名和等号之间不能有空格,和平时我们Java 的变量定义是不一样的。记住,linux 中不能随便有空格就好了。变量名命名规则:1)命名只能是英文字符、数字、下划线的组合,并且不能以数字开头。2)中间不能断开,也就是不能有空格。3)不能是bash中的关键字,如grep。 #字符串单引号中的字符串:...
docker 常用命令 Docker 镜像常用命令搜索镜像: docker search [镜像名] eq : docker search java下载镜像: docker pull [镜像名]eq: docker pull java查看镜像: doc...
Redis 主从复制原理 为什么要主从复制: 如果使用redis 的时候只使用一个数据库服务,那是不存在什么主从复制的。当redis 服务在两个以上时才会有主从复制。为了读写分离和减轻压力,在实际生产中一般会用到多个redis 服务。多个服务那就存在数据同步的问题,主从复制就是解决redis 数据同步的问题。 主从复制如何实现: 从master 复制数据到 slave 有两种复制方式,一种是全量...
zookeeper 初探 Zookeeper 是分布式的,开放源码的分布式应用程序协调服务。它提供有:文件系统、通知机制。Zookeeper 能做的事:命名服务:在它的文件系统中创建一个目录,地址即是唯一的。在无法确定上游程序的部署时,我们也可以与下游程序约定好path。即我们通过这个path来相互探索发现。配置管理:相当于成了一个集中配置地,使分散在各处的配置能更好的管理。由于Zookeeper 提供有通...
ubuntu 安装 docker 本人测试的虚拟机为 Ubuntu 16.04 LTS 64位版本。以下为安装的步骤: 1.更新apt包的索引 , 首次更新的时候这个会在90%的时候卡挺久的,需要一点耐心。 $ sudo apt-get update 2.安装一些包来使得apt 可以通过HTTPS来使用存储库$ sudo apt-get install -y apt-transport-https c...
红黑树(3)残疾版红黑树新增实现 为什么说是残疾版呢,因为标准的红黑树是是三个值在一层,也就是父节点的左右分支节点都可以是红,但在此,我规定了只有左分支为红,也就是规定了最多只有两个值在一层。这样能减少很多修复平衡判断条件。在此我以实现简化版的treeMap 为例。新增节点的第一步就是找出节点将要加入的位置,然后才修复平衡。节点类的定义:package hlm.com.treemap;/*** 节点:* va...
红黑树(2)保持平衡的根本套路 有了解过的同学们应该都知道,红黑树为了保持平衡,有三个基本的操作:左旋、右旋和着色。(不知道的同学也没关系 ,因为在此我只想告诉你们的是这三个操作都是为了什么)首先要有这样一个意识:这棵红黑树在你插入新节点之前就是平衡的(不理解红黑树平衡的可看上一节),我们要做的是使新节点插入后也平衡。比如当只有一个根节点时,它是平衡的,当你再插入一个节点时,无论是放左边还是右边,都会使原来的...
红黑树(1)真的只说原理 树可以分为两大类:平衡的树和不平衡的树。那些都有自己大名的自然就是平衡的树。我们使用树这结构就是看中它插删与搜索拥有同等的高效 O(log n)。平衡树的特点就是每层都几乎布满,不会出现某一分支特别长的情况。因为树的查找跟层数有关,层数越大越耗时间。如果有10个节点就有10层,那就跟链表一样了。现在要学习的这个“红黑树”就是其中平衡树的一种。接下来展开想像力:前提所有的叶子节点...
什么是 kafka kafka 是一种消息中间件当消息人一端传到另一端的时候,kafka 作用是作为传输中间暂时存放消息的载体。为什么需要一个中间载体呢。在解答之前,先定两个概念:发送消息的叫生产者(消息生产者),接收消息的叫消费者(消息消费者)。有时候消息消费的速度可没有消息生产的速度那么快。如果存在消息没有及时处理那么就会导致消息堵塞,最后堵得没处堵了就是系统超时了。所以找一个中间存放的场所很有必要,这里有一...
模板模式实现任务分配 场景:有m台服务器,有n个任务,需要把n个任务按一定策略分给服务器来执行。如按IP地址随机分、按任务数量平均分等。 实现约定:使用一个list来代表全部服务器,比如list中只存服务器的IP地址。同样使用list来代表任务,比如list中存每个任务的ID。分配的过程也就是把服务器IP和任务ID映射起来的过程,所以可以用一个Map 来存储分本结果。 实现:先创建一个模板类 ...
模板模式 Template Pattern 模板模式是使用一个抽象类,里面定义了一系列模板方法,也就是一个算法骨架,再定义一个总的调用统筹方法。统筹方法就是定义模板方法的执行顺序,一般设定该方法为final ,是不让子类破坏的。下面以一个游戏模板为例子,它定义了所有游戏的框架:初始化、开始游戏、结束游戏。然后提供一个玩游戏的调用方法。public abstract class Game {abstract void ini...
什么是微服务 什么是微服务微服务就是一组相较于传统大型应用而言的一种体量较小的服务。它具有的特点是:每个微服务有自己独立运行的进程。一个大型的系统应用有可能是好几个微服务构建起来的。每个服务独立开发独立部署完成特定的功能,互不干扰。微服务间的通信是通过一些轻量级的通信机制,如RESTFULL API 。各服务内部使用何种技术实现外部并不关心,只关心你提供的通信接口。全自动部署机...
可见性 可见性即“内存可见性”。一个共享的变量才有资格谈可见性。首先我们要清楚一件事,当一个共享变量被多个线程拿去使用的时候,是将公共位置的值拷贝一份拿到各个线程的私有空间中去使用的。这样就有一个问题,其中某个线程对共享变量进行了修改,但其他线程中的共享变量却还是原来的值。所谓的可见性,就是当共享变量在某个线程中变化时,其他线程在使用该共享变量前能得到变化后的值,仿佛这个变量的一动一静所有线程都能察觉...
内部锁 内部锁(又叫监视器锁)synchronized 块 是Java 中用来实现原子性的锁机制。synchronized 块由 锁对象的引用+保护的代码块 两部分组成。 获得内部锁的唯一途径是进入到该同步块保护的代码或方法。正常退出或抛出异常都会释放锁。持有锁是互斥的,最多只能有一个线程能获得锁。内部锁有一个特性:可重进入 。一个线程请求其他线程已占有的锁时,请求的线程会被阻塞;...
什么是线程安全 共享:一个变量可以被多个线程访问。可变:变量在被多个线程访问期间,其值可以被改变。状态:其实就是某个对象的一个属性。在线程安全中我们关注的是共享、可变的状态,也就是一个叫状态的变量。 线程安全(对类来说):一个类同时被多个线程访问时,依然可以按这个类被设计的那样完成工作,没有偏差。或者这么说,一个类同时被多个线程访问时,依然像单线程的工作逻辑那样完成工作。 ...
WebSocket 我们经常听到的是HTTP协议,它是浏览器或客户端向服务器请求时所用的协议。这种协议有一个特点,就是它是从客户端向服务端发送请求而服务端是无法主动向客户端发送消息的。这样,服务端始终处于一个被动的状态。一旦服务器有什么状态更新的话,如果客户端不发起请求查看,是没法知道的。所以我们需要一个服务端能主动向客户端发送消息的协议。有这么一个,它叫WebSocket 。 它不单单是服务器主动向客...
ConcurrentHashMap的key 是不能为空的 ConcurrentHashMap 的key 是不能为空的,如果为空,那就会报“java.lang.NullPointerException”空指针异常。这是因为,该方法一进来就用入参hashCode方法去取hashCode ,根本没考虑入参为空的情况。 而平时我们用的HashMap ,对入参为空是有处理的...
HTTP1.1与HTTP2.0的区别 HTTP协议 HTTP,人称超文本传输协议,它是在应用层上的协议,与它对接的传输层的协议刚是TCP。为什么不用UDP呢,因为UDP是不可靠的,而TCP是可以保证请求返回的顺序的,这一点很重要。现在互联网上用到的基本都是HTTP协议。协议嘛,它就是一种规则,具体什么规则在这里我就不介绍了,主要讨论一下它有什么特点。HTTP1.1 这是一个使用了很长时间的协议,并且目前还在使用,它的前面有...
TCP/IP 协议 前面在“分层网络协议(OSI)各层作用” 的时候就知道 IP地址是出现在网络层解决问题的,而TCP 这个协议好像没见过,但其实在它是在传输层的也就是跟端口有关的东西。我们一般把这两个货连在一起叫 TCP/IP协议,其实它并不是指一种协议(当然也有时候可能真的是指具体的一种真叫TCP/IP的协议),而是指一种协议簇(簇不好理解的话那叫协议群好了,里面有各种各样的协议)。比如某种“UDP/IP...
npm 命令是什么 首先 npm 是一个工具,一个包管理工具;maven 是java 界的一个包管理工具;而这个npm 则 javascript 界的一个包管理工具。 maven 有一仓库来存储所有的java 的模块(包),npm 也有相应的仓库来存储所有的javascript的模块(包)。maven 有各种命令来操作模块(包),npm 也有相应的命令来操作模块(包)...
套接字的类型 套接字类型 套接字的类型其实是指套接字的一种传输数据的方式,它们就是面向连接和面向消息。1.面向连接的套接字 代号SOCK_STREAM。它的特征就是传输的数据是什么顺序接收的时候就是什么顺序;当在传输的过程中出现问题,那么问题点的数据就会停止传输并阻塞后面的数据,等问题解决了再从该点继续传输,这样保证了数据在传输过程中不会丢失;按这种排序的方式一直传输下去的话,数据是可以没有边界的(...
我在使用git rebase 时所犯的错 情景是这样的: 有一主分支master ,项目的版本的都不是直接在master上面开发的,而是拉一个版本分支,比如版2.1拉的分支为2.1,我们的新功能或缺陷修复都得基于2.1拉分支下来进行开发。某次为了修复一个问题,我从2.1拉了一个分支名为3315来修改我的缺陷。2.1版本上线后,2.1的代码被合到master上去了,负责人又从master拉了一个新版本分支3.1。此时我没有从3.1拉分...
分层网络协议(OSI)各层作用 我们常说的OSI这个计算机术语的意思就是“分层网络协议”。它给我们规划出了一个网络通讯的模型。为什么需要分层呢,因为通讯这件大事是由分多小事组成,分层有利于明确工作职责。还有的好处就是使得整个通讯更灵活(解耦的效果)。为什么要定一个协议呢,因为“无规矩难以成方圆”,有规矩为事效率才高。如果没有一个公认的协议,各自按各自的想法来通讯,那我想与外边的更多计算机通讯就得支持他们所有的协议。 ...
git merge 与 git rebase 的区别 楔子 从下面这张丑图,应该大概知道:1)这两个命令都能达到两分支合并的效果;2)git rebase 最终的效果比git merge 的要漂亮。 再仔细看图,可以发现git merge 是通过暴力地将两分支的最新commit 揉合到一个新的commit 上达到合并效果的。而git rebase 则是通过一种续接的方式:将master 拆下,续到b1上来。就相当于本来master 与b1...
如何下载JDK的历史版本 1一般我们搜索JDK的时候,多数都是给我们一个下载连接:https://www.oracle.com/technetwork/java/javase/downloads/index.html长这样:或是搜索JDK1.8的时候给的是这个连接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h...
git 日常简单操作俗解 1. 某天,老板在某目录下建了一个叫gittest 的文件夹,并且用 git init 来将其变为git 仓库。并且自动生成了主分支master,这是属于老板才能操作的分支。2. 仓库建好后,老板想了想,在/e/workspace/gittest/下(也就是仓库中)创建一个名为readme.txt的文本,里面写上内容“123456”。 他使用 .git status 查看了一下自...
推送与即时通讯的区别 我们所说的推送,是应用切换到后台后,服务器将消息推送给用户。 而即时通讯,是应用打开着在当前视野中,消息在眼皮底下接收和发送。 一般即时通讯是客户端却查询服务器,看有没有消息是给我的;而推送因为客户端退出到后台了,没法发消息查询服务器(当然流氓软件可能会这么做,那是假退出,在你看不到的地方干着丰富的事情),只能靠服务器想办法把消息给客户端看到。...
Windows 上安装 ElasticSearch ElasticSearch 的下载地址:https://www.elastic.co/downloads/elasticsearch;下载好之后将其解压到你想要安装的目录:比如我的 D:\chengxu\ElasticSearch\elasticsearch-6.3.0 。以上,就算安装好了。那么如何知道安装“好”了呢,运行一下就知道了。进入到D:\chengxu\ElasticS...
了解ElasticSearch 1.ElasticSearch是一个搜索服务器,常用作企业中的搜索引擎。因为当数据量达到一定级别的时候,无论是传统的DB还是NoSQL 都会遇到搜索性能的瓶颈。ElasticSearch 对数据的处理方案是将内容与索引分开存储,从而使其拥有优秀的搜索性能,支持PB级别以上的数据量。2.天生高扩展性,实现分布式扩展太简单。单个服务器的内存毕竟有限、而磁盘的处理能力也是有瓶颈的。当数据量大的时候响应客...
利用反射将bean转化为JsonString输出 (改进版) 利用反射将bean转化为JsonString输出 这个例子中,有好几种类型没有考虑到,特别是StringBuilder 、泛型等。泛型我还没想好如何处理,先添加StringBuilder及其他的类型,并调整一下代码方式。泛型想好如何处理了再更新此篇。packagehlm.com.json;import java.io.Serializable;import java.util.Date;...
ArrayList的排序方法 sort( )的使用 ArrayList 中有一个用来排序的方法:sort( )。一般我们想对数组进行按某个规则排序的时候可以使用它比较方便。 首先定义一个对象类 User package hlm.com.list;import java.io.Serializable;import java.sql.Date;public class User implements Serializable{ ...
了解消息推送 1. 我们常几的消息推送有哪些呢?微信两个好友的聊天;今日头条的推送;绑定某个账号的时候接收的验证码等等。所以消息推送是无处不在。那我们是不是要了解一下它是如何办到的呢。2. 所谓的推送,就是服务器——>客户端。客户端被动去接收消息。 上面两种情况都是服务器将消息推送到客户端的。但它分别代表了两种不同的形式:点对点和点对多(发布/订阅)。 而这种则是客户端给另一个客户...
什么是Session 1.Session 是我们常说的会话,那什么叫会话呢,请看一个场景: 从我登录一个博客的那一刻开始,到我退出博客(关闭应用或退出账号),这整个过程叫一次会话。其中包括的元素有,客户端、服务器还有访问的这一段时间组成了整个会话。A客户端与C服务器建立连接时所处的会话 和B窗户端与C服务器建立连接时所处的会话肯定是两个不同的会话。2.为什么要定义这么一个东西。这明显是划定一个范围,而划定一个范围...
利用反射将bean转化为JsonString输出 1. 我们这里的目标是,将一个beanpublic class UserBean{ private String name ; private String sex ; private Integer age ; private Date birth ; private Dept dept; ...省略get set 方法未写出来}public class ...
Spring Boot 中使用Cache cache缓存经常被使用来提高系统性能和增加系统吞吐量,避免直接访问数据库等其他低速的系统。@Cacheable 作用于方法上,主要用来触发缓存的读取操作。如果缓存存在,那么目标方法是不会被调用的,它是直接取缓存中的数据。如果缓存不存在,那么就进入到方法中获取结果同时会缓存起来。一个方法是可以声明多个缓存的。@Cacheable("user")public User findUser(User u...
REST REST 是什么REST 是 (Resources)Representational State Transfer 的 简写,中文翻译即是 (资源)表现层状态转化。资源,即是一个网络上的实体,一张图片,一个文本,一首歌,一种服务都算资源。你可以用一个URI去标识它,如果你想要获取这一资源,访问这个URI就可以了。表现层,就是这一资源的给我们展示的形式。比如一个txt文本啊,一个JSON格式的...
Long.getLong() 与 Long.valueOf() 的区别 getLong(String str ) 与 valueOf(String str) 都是Long 这个类中的方法,它们的返回值都是Long ,传入的参数都是 String 。看这字面的意思好像都是将字符串变为Long 类型的数据。 先上一个例子:packagehlm.com;public class TestLong { public static void main(St...
Spring Boot 默认日志配置的相关设置 首先我们平时看到的日志是长这个样子的: A:日期和时间 B:日志级别,分别有:ERROR、WARN、INFO、DEBUG、TRACE C:进程ID D 分隔符,后面的是日志消息 E:线程的名称 F:类名 G:消息体 Spring Boot 使用的是LogBack 作为日志的实现,接口使用的是 apache Commons Logging 。我...
个人总结(新公司入职第一个月总结20180619) 以前的自己是不喜欢写总结这一类东西的,感觉这是自己知道的比较个人的东西,不适合写出来。像以前读书时,老师要求写总结的时候总是装装样子,根本算不了个人的总结。但是今天我要转变这样的想法了,真不知道以前是哪里来这种蠢想法的。我这里写的总结,是为了回顾过去一段时间的自己,计划未来一段时间的自己。这既可以达到一种自我肯定,以 为自己继续坚持下去提供些许动力;也可以达到一种不断调整自己路线,不...
Spring Boot 中的 Starter 是什么 先来看一个starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.0.RELEASE</versi...
Spring Boot 配置 1.服务器配置 默认的启动端口是8080,如果想换其他端口可以在application.properties 中配置自己的端口号: server.port=8888(8888是我想配置的端口号)。 配置修改后,启动时将会告诉你端口号已变为8888。 其他的服务器配置有: server.address 服务器IP绑定地址。 server.session....
Spring Boot 中使用 JdbcTemplate 1.什么是 JDBC Template JDBC Template 的全限定名为 org.springframework.jdbc.core.JdbcTemplate 。它是Spring 框架中 对数据库访问技术JDBC 对封装的对象。要使用它需要在pom.xml 中引入<!-- https://mvnrepository.com/artifact/org.springframewo...
反射包 java.lang.reflect⑥ 之 Java 中 Proxy 动态代理类 探秘(二) 动态代理例子改进在“反射包 java.lang.reflect⑤ 之 Java 中 Proxy 动态代理类 探秘(一)” 中已经简单地实现了一个动态代理的例子。但是这个例子有没有觉得别扭呢。我们这个 动态代理类中的获取代理的接口:TargetInterface getProxy(TargetInterface target )似乎和要代理的接口耦合得过分了。也就是说它只能代理 TargetInt...
HttpClient使用详解 HttpClient是一个用来处理HTTP请求的工具类,我们在后台想要使用HTTP请求的时候,很多时候都是使用HttpClient而不是使用URL和URLConnection。 使用HttpClient时需要引入的jar包有: <! - https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclie...
网络编程:理解 Cookie Cookie是什么 我们都知道,浏览器与WEB 服务器之间一般是使用HTTP协议来进行通信的。但是这个HTTP协议它是一个无状态的协议。协议的状态:下一次传输可以”记住“这一次传输信息的能力。无状态就是这次我从浏览器向某服务器发送一次请求,服务器响应了。当再用该 浏览器向该服务器发请求的时候,它当你是一个全新请求,跟前一次,前前一次,后一次,什么时候的请求都没关系。它不“记得”你上一次的登录...
SQLyog 导出表数据脚本 登录 SQLyog ,选中你要导出的表,右键——打开表:如果你没有选中,那它就会默认取你当前查询结果的那张表如果以上两个都没做,那你是不可能导出的,因为按钮都是灰的好了,选中要导出的表打开后,点 “工具”——>“导出表数据/结果为(E)...”在弹出框中选择你要导出的东西的信息。选完后点导出就行了。...
Spring Boot 中使用 Freemarker Freemarker 是一个模板引擎,它是一种基于模板和要改变的数据来生成输出文本(不一定是HTML 还可以是其他的如邮件和配置文件等)。在Spring Boot 中使用 Freemarker 只需要在 pom 文件中引入相关的依赖就可以了<dependency> <groupId>org.springframework.boot</groupId>...
分享几首古老但又好听的歌 每天晚上自己打开电脑敲代码或是写博客的时候,都会习惯性地打开 **云音乐。我都是在首页的每日歌曲推荐里打开播放列表,然后做自己的事不管它,让它自动循环播放。我注意到好几天里面都有播放邓丽君的歌(不管是她唱还是别人翻唱),这些歌挺适合在写东西的时候听的。都是些绵长而不激烈的 哥,调调好听,特别容易使人心平下来。所以在此分享一下:忘记他——关淑怡 、邓丽君 这首歌是词曲都是香港鼎鼎大名的...
Spring Boot 的 JSR-303 验证框架的一些注解 JSR-303 是Java 的一个验证框架,它定义了很多注解来验证Bean 的属性。@Null :对象是否为空 @Nullprivate String str;@NotNull :对象不为空@Nullprivate Long id;@NotBlank :这是用来验证类型为字符串的,字符串不为空或是不为空字符串@NotBlankprivate String str;@NotEmpty :多数用来...
Spring Boot 的 Controller相关知识学习 @Controller这是一个很常见的注解了,它标在类上:@Controllerpublic class UsersController {}表明该类是一个前端控制器,它提供接口来处理用户请求。@RequestMapping该注解是用来映射URL 的,它可以了, 现在类上,也可以出现在类中的方法上:@Controller@RequestMapping("/user")public class Us...
Spring Boot 中使用AOP 对于Spring Boot 应用,使用AOP 只需要在pom 文件中引入好下依赖:<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop --> <dependency> <groupId>org.spring...
网络编程:Java Socket通信实现(一) Socket是什么 Socket 也叫“套接字”,是两台机器间通信的端点,也就是成对存在才能通信。Socket 本质是编程接口,对TCP/IP的封装。 如果说HTTP是轿车,提供了封装或者显示数据的具体形式;Socket 就是发动机,提供了网络通信的能力。(来自网络)(来自网络) 在Java 开发中使用Socket 时会常用到两个类,都在java.net 包中:Socket和Se...
jar 包与 war 包的区别 war 包: WEB 模块,可 以是一个web 应用,如一个网站,可以直接部署到容器中运行起来。它一定有一个 WEB-INFO目录,其他有一个web.xml文件和class目录。web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类。jar 包 : 只包含一些class 文件,方便管理。在有 main_class ...
使用apns-http2 开源包 时报java.lang.NoClassDefFoundError: sun/security/ssl/EllipticCurvesExtension 异常问题解决 场景:本地环境:JDK 1.8.0_171 + alpn-boot-8.1.12.v20180117.jar 无异常情况服务器环境:JDK 1.8.0_60 +alpn-boot-8.1.12.v20180117.jar 报如题的异常原因是:JDK 1.8.0_171 (或是其他高版本) 中有 EllipticCurvesExtension 这个类,而JDK 1.8.0_60 或其他低...
转行做程序员 想起当年有转行想法的时候,我也在网上搜了很多这个关键字的答案。为的什么呢,无非就是想给得到一个定心丸,希望所有答案都告诉你:这么干是对的,以后前程似锦,你永不后悔。 我也是这么希望的,可是看到的答案跟大家看到的一样。当然有给你分析形势大好,人才还没饱和,鼓励你跟随自己的心;也有给你分析鉴于年龄太大,转行已晚,人才饱和等给你劝退的;还有一些好像并没给你想要的答案却和你分享转行学习之路的...
网络编程:URL与URLConnection 1.URI与URL URI(Uniform Resource Identifier)统一资源标识符,是用来标识某一互联网资源名称的字符串。 URL(Uniform Resource Locator)统一资源定位符,表示互联网上标准资源的地址。 “https://baidu.com/item/url” 像上面这样的,可以说它是URL,也可以说它是URI。 “ <I...
手把手实战:eclipse 搭建 SpringMvc+Spring boot (+maven) 环境准备Eclipse jdk1.8Maven 3.2.1(集成在Eclipse中)以前我已做过用eclipse 搭建 Spring MVC 框架环境的实战了,那么这次再做会有什么区别呢。其实看题目已略可知一二了,除了这次是利用Maven 之外,最主要的是 Spring boot 。其实写这两种方式是为了对比,让大家对spring boot 有个大概的了解,它使得我们搭环境跟以前有什么不同。在《反...
公钥和私钥 公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。(以上话语来自百度百科) 首先有个印象,这是两把不同的钥匙。至于用算法得到的两把钥匙哪个是公哪个是私并无确切标志,只是取决于你把哪个给别人,哪个留给自己。给自己留的当然就叫私咯。 它们是作什么用的?它们是作传输加密用的。其...
JDK源码/轮子分析 :反射包 java.lang.reflect⑤ 之 Java 中 Proxy 动态代理类 探秘(一) 今天的主角是:java.lang.reflect.Proxy什么是代理当我们要去找一个目标A的时候,目标说你不能直接找我,先找B,要找我做什么事跟B说好,B会跟我来弹。上面的情景中B就是代理。说白了就是个转话的,但又不仅仅是传说的。它还有讨价还价、“擦屁股”等的作用,反正目标只管他能做的专一的一件事,其他的前前后后的可以让代理做。听完这个大家是不是想到一个很熟悉的词,没错“拦截”,回到根源它们做的...
JDK源码/轮子分析 :反射包 java.lang.reflect④ 之 Method 实例方法(类方法)探秘 今天的主角:java.lang.reflect.MethodMethod 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。与获得Field 对象一样,我们可以通过Class 对象的相关方法来获取Method对象。获取本类中所有的方法, 但不包括继承的方法Method[] getDeclaredMethods()Method ...
JDK源码/轮子分析 :反射包 java.lang.reflect③ 之 Field 获取类的属性字段信息 今天的主角:java.lang.reflect.Field 继前面说的,一个类有它的抽象,构造方法有它的抽象,当然我们类中的字段也可以有它的抽象。Field 也就是我们说的字段,类中的属性。一般地我们在类中看到的样子是这样的:private String privateStr;public static final String publicStr ; String ...
Git 必会常用命令 工作中使用Git 也有半个月了,我感觉有必要整理一下Git 常用且必需要会的几个命令了。Git clone https://github.com/fivethirtyeight/data.git首先必需要会从远程将代码拷贝到本地,Git clone 后面跟的就是代码的地址,虽然不是用得很频繁,但这个却是第一个要会的。Git banch 分支名Git checkout 分支名一般来说我们都不会从主...
网络编程:http协议请求java 实现学习 由于工作业务原因,要使用到网络编程,今天也是在学习这一块。能写出的东西太了,也是看别人的学会的,所以就直接引用别人的地址了。但这并不是能用在我工作中的,目标还有待达成。加上今天房东催搬房子,多方沟通心里也烦躁。以下是今天有所收获的网址:http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html...
JDK源码/轮子分析 :反射包 java.lang.reflect② 之 Constructor 获取类的实例对象 反射机制的概念 在前一篇中其实有提到过反射机制相关的概念了,只是没有正式说明,在这里我觉得有必需认真地说明一下。反射就是指在程序运行的时候,对于任何一个类,都可以得到这个类的属性或是方法;对于任何一个对象,都可以调用这个对象的方法和属性。(出自百度百科)今天的主角:Constructor 上一篇我们了解到每一个类的信息都有一个抽象的类--Class ,那么再细化下去,类中的构造方法这么...
手把手实战:eclipse 搭建 SpringMvc+mybatis 框架环境 说明 spring mvc 的环境在 “手把手实战:eclipse 搭建 SpringMvc 框架环境” 中已经搭建完成,那么接下来此会在此基础上把 mybatis 添加进去(前一章由于有很多截图使得篇幅看起来很长,在这章我就不再粘一遍了。我只是把它的代码拿过来,改个工程 的名字来做这篇示例的)环境准备 eclipse jdk 1.8 tomcat 7 mysql ...
手把手实战:eclipse 搭建 SpringMvc 框架环境 环境准备eclipsejdk1.8tomcat 7 步骤总纲 a.准备好开发环境 b.下载相关jar包 c.在eclipse 中创建好工程 d.引进下载的jar 包 e.配置xml文件 f.编写代码及测试 Springmvc相关jar包jsp,servelet相关jar包创建工程及导入ja...
《软技能:代码之外的生存指南》读书感悟:03 楔子: 习惯。我看过很多书籍中都有提到,当然这本书中也提到:一个有所成就的人,必定有一身好的习惯。诸如,每天坚持7点起来跑步;早上9点必定计划好一天工作;每周作一次总结;或是每天坚持读书等。毫无疑问,好的习惯是可以影响到人的精神面貌。摇想高中那会,每天坚持早起到操场跑个步,然后买早餐到教室早自习;坚持每周末都会到球场打球。坚持做这些与学习看似无关系的东西,但那会精神状态真是很好,上课从不会磕...
JDK源码/轮子分析 :反射包 java.lang.reflect ①之 Class 探秘 其实 Class 并不在 java.lang.reflect 中,它的全限定名为: java.lang.Class 。Class 是什么?它和我们平时写的代码中的类一样,对它么的它就是一个类。它有属性有方法,别想得它有什么特别的地方,我就告诉你它不特别,它就是一个类。这个类是干什么用的呢?它是用来表示其他类的信息的类。是不是有点绕,我来说慢点:Class 这个类的实例,就是表示其他类(包括它自己)...
论“精通”的定义及实际工作中需要的能力 楔子:解决问题的能力:不能解决这个问题、很久才能解决这个问题、可以解决这个问题、快速解决这个问题。解决问题的结果:感觉能行、一般情况下能行、多情况下能行、任何情况下能行。循序渐进来定义听过:哎,我听过spring 这个东西,但就是不知道它有什么用,能解决什么问题。了解:我知道spring 一般有什么作用,能解决哪些问题。掌握:我知道spring 有什么作用,并且了解它的常用功能,在实际情景中能马上...
《软技能:代码之外的生存指南》读书感悟:02 人在出来工作之后,想要提高自己,大部分人可以选择且容易选择的途径,当然就是自学了。当然,你也可以报个培训班,这不失为一个好途径。但我这里想说的是自学。对于写代码的人来说,自学的方法可能要不太一样。概括来说就是,从局部扩展,由实践巩固。编程这门东西,最最底层的东西基本是不变的,但我们一般写代码的也很少接触到那方面的东西,一般都处于使用别人造好的轮子。编程技术的更新换代越来越快,也就是造出的轮子越来越...
《软技能:代码之外的生存指南》读书感悟:01 今天有幸读到此书,感怀颇多,故有此笔录,以此坚定意志。念自己成为码农以来,也差不多两年了。还依希记得2016年8月26日到自己作为程序员的第一家公司报到的时候,心里是夹杂着激动和惴惴不安。激动是因为自己终于转行找到工作了,更大的不安是因为心底没有自信自己能否胜任这份工作。而今天的自己——两年后转到互联网公司的自己,也依旧是同样的心情。看来都两年了,自己的心性还是没有进步。虽然自己觉得在上一家公司工...
spring:spring 的 7 个传播行为和 4 个隔离级别 事务:一组操作(一件事或很多件事),要么一起成功,要么一起失败。事务的四个属性: 原子性(Atomic):对数据的修改要么全部执行,要么全部不执行。 一致性(Consistent):在事务的执行前后,数据状态保持一致性。 隔离性(Isolated):一个事务的处理不能影响另一个事务的处理。 持续性(Durable):事务处理结束,其效果在数据库中持久化。事务并发处理可能引起...
Java 导出Excel 导出Excel 有多种方式,这里就先介绍 Jakarta POI 这一种。主要靠的是一个Jar 包 poi-3.7.jar 本次代码中所用就是该版本的包,其他版本应该差别不大。 在上代码之前,感觉有必需认识一下这Excel 这个东西,看Java 中是怎么对象化的。 像上面这一个个.xls 结尾的一个个Excel 文档可以是一个对象,在poi 中叫 HSSFWorkbook 。 ...
JVM:JVM 内存分区 Java 虚拟机在执行Java 程序的过程中会把它所管理的内在划分为若干个不同的数据区域。这些区域都各有用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。(来自:《深入理解Java虚拟机》)1.程序计数器 这是一块相对来说比较小的内存空间,它的作用是用来存储线程执行到哪个字节码的行号。程序运行时就是不断地执
JDK源码/轮子分析:LinkedList 原理浅解 LinkedList 是另一种实现形式的数组public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable{ transient int size = 0; transient Node first; tra
spring:spring 的IOC 容器 IOC容器从字面上形象地可以知道,它是一个容器,装东西的,可以想像一个桶。IOC容器这个桶是装什么的呢,它是装我们开发的系统中使用到的对象的。首先可以如上面那么简单理解。只说IOC容器那太抽象了,对应我们的spring 中是什么呢。我们在 spring 中经常碰到的 两个接口 BeanFactory 和 ApplicationContext 就可以看作是具体的IOC容器。其中 Be
JDK源码/轮子分析:ArrayList原理浅解 ArrayList 个人觉得比较容易理解一点,主要就是一个正常的数组。publicclass ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable{ private static final long
JDK源码/轮子分析:HashMap原理浅解 集合类中很经典很常用的一个:HashMap。publicclass HashMap extends AbstractMap implements Map, Cloneable, Serializab以上是HashMap 的一个继承实现关系 ,其父类中主要是将Map 定义好及实现一些基本的操作,HashMap是在此基础上的增强。
java类中为什么设置set 和get 方法操作属性 样例一:class person { public String name ; public String sex ;}如上这么一个类我们可以对它的实体进行: 起名操作,如 person1.name = "小明"; 取名操作,如 person1.name;样例二:class person{ pri
java 中 int 类型的取值范围 int 是整型,对应我们数学上认识的数值为整数,就是没有小数点的数。在计算机系统中,我们为这种类型的数定了一个范围(其实我们为每一种类型都定了范围,至于这个范围是多少.....(当然不能那么快说)。为什么要有这个范围的限制呢,这是为了物尽所用,不能浪费。打个比方,我要开一块地(在存储空间中开辟一块空间),为了种菜(为了存储一个数),空间开好后,我往这块地上种了一棵菜(放
document.getElementById("id").value与$("#id").val()之间的区别 ....今天在项目中遇到这么一个JS报错:原因是代码中有这么一段:对,就是varotherWageChageType =document.getElementById("otherWageChageType").value;中的“otherWageChageType”这个ID不存在导致的。因为JS报错,导致页面死掉不动了。如果把这句改为$("
如何判断一个list是否为空 if(null == list || list.size() ==0 ){}list是一个集合,也就是一个容器。null == list 判断是否有这个容器,而 list.size() ==0 判断这个容器有没有东西,两者是不一样的意思而 list.size() ==0 与 list.isEmpty() 没有区别 容器相当于水杯,如果水杯都没有,水是绝对不会
Orcale(一)之:表1 说在前面的话 在学习一个东西之前,我觉得基础是很重要的。所以我在学习数据库之前,会把相关的术语弄明白。进这一行,连术语都不理解,那更不用明白别人想告诉你的东西了。 这是我自我学的第一篇,互勉。