自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring cloud + kubeedge

序言最近公司在做边缘计算相关的事情,让我负责云平台的开发。云边协同使用的是华为开源的kubeedge,为了更好的支持云平台开发,我开始自己开发基础框架:spring cloud kubeedge。第一节 :为何要开发这个框架华为的kubeedge开源的时间并不长,spring cloud 官方还没有集成它。但是spring cloud 家族已经有spring cloud k8s了,该框...

2019-12-11 17:47:33 1175 1

原创 Hibernate最新英文资料翻译整理

翻译&&英文技术资料 欢迎各位行业内朋友骚扰,哈哈。2018年7月29日Hibernate ORM 5.3.3.Final User GuideWorking with both Object-Oriented software and Relational Databases can be cumbersome and time consuming. Dev...

2018-07-29 16:00:18 469

原创 手把手教你实现一个 EventBus 框架

一、事件总线管理的“原材料”观察者的基础信息,维护的是观察者以及它收到消息后需要执行的方法;二、事件总线的核心-注册表注册表示实现事件总线框架时最复杂的部分,我们提供两个基本功能,注册观察者和发消息(执行观察者的逻辑);这个类大量使用了 Java 的反射语法,不过我已经在代码中为大家详细的标明每一行代码的意义,理解起来并不难。这里使用了CopyOnWriteArraySet,顾名思义,在写入数据的时候,会创建一个新的 set,并且将原始数据 clone 到新的 set 中,在新的 set 中写入

2022-06-21 11:19:27 610 1

原创 java开发中异常处理的几种手段

然后在异常的地方将错误码和错误描述返回: 这是项目中经常使用的一种简单的手段,定义好枚举的错误码和错误描述直接返回给前端即可。有点简单,缺点是增加或者修改均需要编译、打包、重新部署等。使用枚举的错误码 定义配置文件:errorCodeConfig.properties 读取配合文件的工具类:返回值拦截器: 当发生异常时便可以将错误码转成错误描述返回给前端。该办法有一个好处是可以修改配置文件,然后重新启动程序就可以实现错误描述的修改,免去了编译代码和重新发版的麻烦。但是拦

2022-06-16 22:01:56 950

原创 《皮囊》中读出的人生哲学

1、高贵的灵魂与好看的皮囊相遇合成的是仙人;2、执拗不是好事也不是坏事,过于执拗的人容易变成神经病,而事事妥协的人容易变成一事无成的窝囊废;3、灵魂与皮囊不可分割,但是灵魂支配的皮囊是美好的,若是皮囊支配了灵魂也就变成了动物;4、自律是好的,但是若是因自律而优秀却不知天赋几何有可能会精神崩溃,天才文展便是如此;人必须学会与自己的缺陷相处;5、追求梦想、执着于理想或者探索生命的意义,是一件危险的事情,这样的狂人疯子很可能脱离生活,最终被现实扑杀;6、不要满足于环境或者他人赋予你的优势,因为

2022-05-26 15:25:25 459

原创 解决Mybatis源码使用IDEA打开后多处报错的问题

1、先看工程报错BiFiunction是Java8引入的,这里显示找不到;HashSet<>(),原本可以自己推断类型,这里显示版本在level5不支持;2、怀疑问题配置的javaJDK版本不对;确实是jdk1.8往下找Modules中,Language lever 是5,我们改成8试一下;3、问题解决...

2022-05-26 11:29:24 423

原创 格局-读书笔记-不娶妻-不生子-从生物学角度来讲就是竞争失败

《格局读书笔记》

2022-05-24 14:43:39 98

原创 Mybatis源码分析---Mybatis二级缓存中的责任链模式

一、Mybatis的源码写的像艺术品Mybatis的代码设计的非常有观赏性,其中大量使用设计模式,并且用的非常棒;比如Mybatis将日志功能委托给其他的日志框架使用的是适配器模式加工厂模式实现的;Mybatis的插件是通过代理模式+责任链模式实现的;Mybatis的二级缓存是装饰器模式+责任链模式实现的;读源码不仅可以让我们了解其底层技术细节,有利于提高我们自己的编码能力,也可以学习这些优秀的框架中采用什么样的数据结构?引入了什么算法?组件的抽象遵循了什么样的设计原则?二、实现二级缓存的需求分析

2022-05-17 17:32:12 603

原创 解决 invalid DSN: missing the slash separating the database name

完整的报错:GOROOT=C:\Go #gosetupGOPATH=D:\tools\bb #gosetupC:\Go\bin\go.exe build -o C:\Users\ccb\AppData\Local\Temp\___1go_build_go_web_study_main.exe go-web-study/main #gosetupC:\Users\ccb\AppData\Local\Temp\___1go_build_go_web_study_main.exe #gosetupp

2022-01-23 13:02:06 4514

原创 go web中使用orm框架,类比java中的Hiberante

# Gorm被其开发者声称为最棒的ORM,他们所言非虚Gorm的功能非常强大,他允许程序员定义关系,实施数据迁移、串联多个查询以及执行其它很多高级的操作。除此之外,Gorm还能设置回调函数,这些回调函数在特定的数据时间发生时被执行。下面的代码是我实现一个使用gorm的例子:package mainimport ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" "time")type Pos

2022-01-23 12:56:05 539

原创 go语言结构体与Mysql数据库之间的交互

go语言使用从数据库Mysql获取结构化数据package mainimport ( "database/sql" "fmt")var Db *sql.DBtype User struct { id string name string age int64}func init() { var err error Db, err = sql.Open("mysql", "root:45665###@/sd?charset=utf8") if err != nil

2022-01-20 11:47:16 1281

原创 go语言写json文件,将结构化的数据写到json文件

package mainimport ( "encoding/json" "fmt" "io" "io/ioutil" "os")type Post struct { //带结构标签,反引号来包围字符串 Id int `json:"id"` Content string `json:"content"` Author Author `json:"author"` Comment []Comment `json:"comments"`}type Author struct.

2022-01-18 21:57:06 1789 1

原创 go语言读取json文件的方法

1、读取文件的代码package mainimport ( "encoding/json" "fmt" "io/ioutil" "os")type Post struct { //带结构标签,反引号来包围字符串 Id int `json:"id"` Content string `json:"content"` Author Author `json:"author"` Comment []Comment `json:"comments"`}type Author s

2022-01-18 21:26:19 7427 1

原创 使用Go语言处理xml文件

package mainimport ( "encoding/xml" "fmt" "io/ioutil" "os")type Post struct { //带结构标签,反引号来包围字符串 XMLName xml.Name `xml:"post"` Id string `xml:"id,attr"` Content string `xml:"content"` Author string `xml:"author"` Xml string `xml:",innerxml"`.

2022-01-18 12:41:05 1068

原创 责任链模式的设计要义以及经典应用

1、提取责任链模式的藕和丝设计模式之责任链模式:使用“藕断丝连”的设计哲学去解释,“请求的发送”和“请求的接收”是2节藕,而handlerChain是丝。这是我在工作和学习中总结的设计最高要义:“藕断丝连”。2、责任链模式的设计要义将框架级别的代码抽象到抽象类之中,将具体逻辑下放给不同的逻辑单元。责任链可以使用数组或者链表来实现,维护责任链的工作包括新增节点,触发链上的工作。责任链模式各“逻辑单元”被维护在数据中或者链表中,一个某个逻辑单元已经成功处理了“请求”,那么就停止请求在“责任链

2021-11-14 16:33:43 478

原创 贫穷的本质

## 我们为什么摆脱不了贫穷> 1、健康---疾病导致贫困> 2、教育---不能接受足够的教育而贫穷> 3、生育---孩子太多,降低了孩子们健康和教育方面的投资> 4、金融服务---难以享受正常的金融服务> 5、保险服务---没有合适的、安全的保险> 6、存蓄,穷人存钱很难> 7、高利率的贷款,个体经营者获取贷款以扩大生产非常困难总结:贫穷源于思维,穷人不善于利用自己已经拥有的资源,他们有非常多的借口。有些借口是为了满足自己的欲望.

2021-08-29 19:01:44 149

原创 最好的设计就是“藕断丝连”,成长为架构师的路上,需要独立思考

目录1、代码设计必须讲究解耦合2、解耦到处有,只遇有心人3、最好的设计:藕断丝连3.1 写xml文件3.2 写一个注册中心,加载并解析Bean3.3、写一个接口,所有策略的“爸爸”3.4、写一个“儿子”,实现“爸爸”的愿望3.5、写一个实体类、一个service和一个controller,来验证我们的创新“策略模式”4、启动项目5、用postman测试一下1、代码设计必须讲究解耦合为什么要解耦合,因为耦合深的代码不仅难以维护,不好扩展,还无法复用。Java设.

2021-07-29 20:41:04 221

原创 序列化和反序列化,你要明白的那些事儿

目录一、序列化和反序列化1、Java开发中序列化和反序列化的工具2、分布式场景下的数据通信或者异构环境下的数据交换3、编码器和解码器一、序列化和反序列化我们在开发一些远程过程调用(RPC)的程序时,通常会涉及对象的序列化和反序列化问题。序列化:java对象--->json格式的结构化字符串--->字节流java对象--->xml格式的字符串--->字节流java对象--->protobuf格式的二进制数据--->字节流反序列化.

2021-04-13 14:26:13 241 1

原创 用Java代码操作redis,从简单的redis到复杂的分布式锁

一、本地安装redis并启动;条件比较差,只能先搞一个单机版的玩一下。Redis的版本如上图,简单安装并启动,没有做任何配置。先用Jredis做一下测试 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8

2021-04-01 09:44:57 138

原创 深入理解Guava的异步回调模式

目录1、join异步阻塞2、Callable接口和TaskFuture类的异步执行3、Guava的异步回调4、Guava异步回调的底层原理1、join异步阻塞主线程中调用子线程的join方法,主线程被阻塞,一直等到子线程返回才能往下执行;当然你可以设置超时时间来控制阻塞的时常,但是这种方法不知道子线程的执行结果,无法控制子任务的执行结果,换句话说就是老板不知道员工干活的结果,结果失控。2、Callable接口和TaskFuture类的异步执行这是一次伟大的改进,但是.

2021-03-22 21:49:57 1575 4

原创 一周学会netty之核心组件和设计

1、使用netty实现一个服务端程序该程序在ACCEPT到任何connection后,不处理数据,只是简单的返回一个时间戳!代码路径:com.miller.nettyox.sevice.TimeServerHandler2、使用netty写一个客户端的程序该程序用于向服务端发出请求,获取当前时间,拿到时间戳以后,将时间戳转换为“客观”能够看懂的样子!代码路径:com.miller.nettyox.client.TimeClient3、使用netty实现服务端和客户端程序的不同姿势Bo

2021-03-03 16:57:56 124 1

原创 未来5-10年的行业机遇

1、AI技术,未来大量IT人将会失业,代码将由AI来完成,我必须做AI化的转型;2、未来大量资金将涌入芯片行业,来构建物联网这张大网;3、游戏行业,未来的世界,大量人是无用的,必须将他们固化到虚拟世界中,世界才能稳定;4、移动支付将是全球化;6、电动汽车,汽车完全电气化是大势所趋;7、虚拟货币,包括游戏世界中的货币将是一个机遇;要想富,先完成原始积累,这个过程是残忍的,流血、流泪的。1、上班是不可能让你摆脱困境的,但是你必须通过上班,出卖自己的时间来完成原始积累;2、不.

2021-02-22 20:59:30 92

原创 使用读写锁确保HashMap成为一个线程安全的容器

一、众所周知,HashMap是线程不安全的我们可以选择ConcurrentHashMap二、如果没有ConcurrentHashMap,如何保证HashMap是线程安全的可以利用读写锁来保证其线程安全性,同时提供不错的吞吐量和并发性。package com.miller.datastructure.readwrite;import java.util.HashMap;import java.util.concurrent.locks.Lock;import java.util.

2021-01-14 15:23:24 867 2

原创 java中的并发工具类---大秦帝国篇

java中的并发工具类java中的并发工具类 序号 工具类 匹配的业务场景 1 CountDownLatch 一个或者多个线程等待其它线程完成操作 2 CyclicBarrier 多线程计算数据,最后合并计算结果的场景 3 Semaphore 流量控制 4 Exchanger 线程质检交换数据 1、CountDownLatch的使用测试代码package com.miller.fanxing;import j

2021-01-10 10:02:10 329 2

原创 合并分支时,有冲突解决办法记录

合并分支时,有冲突解决办法记录一、问题描述:我们项目小组在0917这个日子,基于Master分支拉了一个新分支;这个新分支的名字:dev-0917; 我们在这个分支上做了大概一个月的开发后,测试环境测试代码没问题,1030的时候想把dev-0917上的代码合并至master分支;但是,0917-1030期间,发生了一些事情,其它人已经向master分支合并过代码;此时,我们要合并代码,会产生冲突;二、解决问题办法一、亲测不可以第一步:Git面板上点击master分支,选择Rebase

2020-11-05 17:27:51 1506

原创 推荐一个在线文档生成器

网址:https://java.bejson.com/generator/效果:CREATE TABLE `wo_jp_branch_org` ( `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', `branch_org_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL

2020-08-16 23:16:00 641

原创 mysql查询今天、昨天、本周、本月、上一月 、今年数据

可以在数据库就解决的问题,我却放在了应用的服务层,今天偶然看到的,记下来。http://www.manongjc.com/detail/14-nxevdshnxgcatwv.html

2020-08-02 08:45:06 101

原创 压力测试专篇

1、使用Jmeter进行压力测试推荐博客:https://www.cnblogs.com/xiaoxi-3-/p/8393063.html第一步:生成性能测试脚本;界面操作,将自己的参数配置到相应的位置就可以了;第二步:GUI方式启动测试。

2020-07-31 11:08:41 104

原创 分布式对象存储-可扩展的分布式系统--Go语言实现

一、什么是分布式系统一个分布式系统要求各节点分布在网络上,并 通过消息传递来合作完成一个共同的目标。分布式系统的三大关键特征:1、节点之间并发工作;2、没有全局锁;3、否个节点上发生的错误不影响其他节点。分布式系统的好处在于可扩展性,只需要加入新的节点就可以自由扩展集群的性能。二、分布式系统的前提分布式系统存在的前提是:解耦,通过某种手段让系统的某些部分解耦合,互相能够不依赖对方单独存在,并单独“运行”。“解耦设计”是一个系统具有良好的性能的灵魂所在。那么一般的系统通过什么方

2020-07-05 08:36:36 615

原创 用Go语言实现一个缓存器

Go语言的源码阅读1、Cache的底层实现package cache2goimport ( "sync" "time")// CacheItem is an individual cache item// Parameter data contains the user-set value in the cache.type CacheItem struct { sync.RWMutex // The item's key. 空interface(interface{})不

2020-05-21 18:31:23 480

原创 Go语言中的切片

Go语言中的切片//创建一个长度和容量都是0 的切片 //创建一个空切片的3种方式 //第一种:创建nil整型切片 var slice []int fmt.Println(cap(slice)) //第二种:使用make创建整型切片 slice1 := make([]int,0) fmt.Println(cap(slice1)) //第三种:使用切片字面量来创建空切片 slice2 := []int{} fmt.Println(cap(slice2))空切片在底层数组中包含0个

2020-05-19 11:29:35 137

原创 Go语言市如何保证高并发的?

1、前戏什么市CSP?当进行和G语言有关的讨论的时候,你会经常听到人们抛出CSP这个缩写。在某些环境下CSP经常被赞美成Go语言成功的原因已经并发编程的“万能钥匙”。那么,CSP到底是什么?为什么让人们如此兴奋呢?CSP即“Communicating Sequential Processes”(通信顺序进程),既是一个技术名词,也是介绍这种技术的论文的名字。在论文中Hoare认为输入与输出是两个被忽略的编程原语,尤其是在并发代码中。论文中的核心思想就是一个进程的输出应该是另一个进程的输入。

2020-05-16 15:52:23 220

原创 Go语言中的接口

1、接口时用来定义行为的类型对接口值方法的调用会执行接口值里存储的用户定义的类型的值对应的方法eg:package mainimport "fmt"type notifier interface { notify()}type user struct { name string email string}func (u *user) notify() { ...

2020-05-05 17:28:09 433

原创 为什么开始学习GO言语

一、我为什么要学习GO语言?1、接触了Go语言编写的程序1年之内接触的两个新项目基础都是Go语言,一个是华为的kubeEdge项目,一个是联盟链(区块链的一种应用)。Go语言在这些新事物中的应用让我开始思考,学习Go语言的必要性;2、工作中遇到高并发的问题,使用java不仅容易出错,而且学习相关的知识的时间成本非常高;而Go语言天生对高并发的良好支持让我看到应对“高并发”编程的简单、高...

2020-05-05 13:43:22 691

原创 java异常处理---异常传递、封装

Java异常处理异常需要封装,但是仅仅封装还是不够的,还需要传递异常。一个系统的友好型的标识,友好的界面功能是一方面,另一方面就是系统出现非预期的情况的处理方式了。为什么不能在持久层直接把异常抛弃掉?比如我们的JEE项目一般都又三层:持久层、逻辑层、展现层,持久层负责与数据库交互,逻辑层负责业务逻辑的实现,展现层负责UI数据的处理。 又这样一个模块:用户第一次访问的时候,需要...

2020-04-05 17:36:19 764

原创 椭圆曲线加密算法

椭圆曲线加密算法是一种非对称加密算法,或者叫做公钥加密算法。它的基础是以椭圆曲线上的点的加法运算或乘法运算表示的离散对数问题。美国国家标准技术研究所发布的sepc256k1标准中进行了定义,sepc256k1函数是由以下函数定义的:y^2 mod p = (x^3 +7)mod p mod p 表示对素数p进行取模,p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7...

2020-03-21 21:04:36 782

原创 如何在maven工程中引入开源库中没有的Jar

参考:https://www.cnblogs.com/zhoudy/p/10197145.html

2020-03-05 21:00:07 281

原创 智能合约那些事儿

1、智能合约是什么维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合同的目的是提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的...

2020-03-01 18:48:50 657

原创 区块链--基础知识

目录区块链基础知识25讲第一讲:理解分层的概念软件系统的分层第二讲:区块链与软件架构本节重点时理解区块链的核心作用,为什么需要区块链?去中心化的系统架构有很多好处:去中心化的不足之处:那么,如何甄别一个系统到底是不是去中心化的系统?区块链的作用区块链基础知识25讲第一讲:理解分层的概念软件系统的分层应用层与实现层 功能性与非功能性应用层关心什...

2020-02-29 13:24:28 470

原创 python的链表与数组对比,优势和劣势

1、python中的链表如何实现class Node(object): def __init__(self, data, next): self.data = data self.next = nextif __name__ == '__main__': head = None for n in range(1,6): ...

2020-02-25 23:12:18 1365 1

软件设计师考试资料---04-17年真题+模拟题

软件设计师真题资源,覆盖十多年的真题,有答案。 软考必用资源。

2018-05-24

空空如也

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

TA关注的人

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