自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue手动快速移植小程序总结

1、前言1.1 关于技术选型这大半年精力从后端转移到前端开发,一下要同时弄ios + 安卓 + 小程序的研发,很自然选择了混合App的方案,这样可以在最小学习成本下快速实现功能,并且在遇到一些可能的风险的时候,不至于因为不懂OC, Swift或者Android相关的东西导致无法处理。前端技术框架早期Angular和Vue都接触过,Angular从1,到2,6都试过,技术架构变得太大,听...

2020-05-05 10:19:07 1840

原创 Flutter 研发阶段性总结(四) 基本设计模式BLoC

BLoC(Business Logic Component)设计模式是一个新鲜词汇,其实是在Rx系列思想普及之后的必然趋势,即响应式编程。其核心在于:将变量的变化看作一种流,并把Widget的状态绑定在流上,从而当变量改变时候,Widget接收到事件并作出响应的改变。因此BLoC可以做到完全将业务逻辑封装起来,Widget仅通过输入、输出和逻辑模块交互,做到完全的解耦。BLoC的结构盗图一下:...

2019-06-23 21:06:07 2341

原创 Flutter 研发阶段性总结(三) 基本设计模式MVP

在上篇内容的基础上,我们已经可以写一些简单的应用了,但是可以预见到的是,随着页面功能的增多,函数个数、数据与页面的交互也会随之增对,随之而来的就是散落在各处的函数和setState,代码就越来越难维护了。因此需要适当的引入一些设计模式,将界面、数据与逻辑解耦。这里首先提一下MVP。什么是MVP?网络上文章很多。。。。。就不重复了。Flutter上的MVP实践这里直接拿代码说话,先说说MVP...

2019-06-23 20:23:38 2090 1

原创 Flutter 研发阶段性总结(二) 基本需求研发总结

由于不是专门做App研发的,可能思维比较狭隘,以下两点估计能覆盖大部分的需求场景:基于HTTP网络请求的增删改查基于本地数据库,比如sqlite的增删改查。。。。。。别打我,也可能就我自己这么认为。所有开发的基础 - Future这个应该前端的同学很熟悉,从以前的事件监听,promise到现在的Future都是异步开发的思想。说白了就是:我封装了一个任务和参数交给系统,你把这...

2019-06-23 17:56:17 283 2

原创 Flutter 研发阶段性总结(一) Widget

Flutter作为Google一个新的用于构建跨平台的手机App的SDK,最近势头正猛,与原来的Hybrid形式的App相比,性能优势明显,同时官方文档完善。同时也推出了很多官方基础教学视频,能爬梯子的同学可以在油管上看到诸如:Widget of the week: 用1-2分钟时间形象的展示一个Widget的用法和效果(Flutter的所有界面元素包括App框架本身都是Widget)。...

2019-06-23 17:01:13 327

原创 Jenkins on Kubernetes中的Pipeline语法以及自定义Slave的使用方式

从单体应用,到Spring Cloud,再到Kubernetes,我们的平台正在一点一点追赶别人的脚步。但是由于网络隔离等外部因素影响,CI/CD一直是实施比较困难的环节。最近稍微空闲一些,准备一鼓作气做一次整体代码迁移,打通代码仓库和应用部署环境。在技术选型方面,jenkins的入门门槛最低,同时由于我们已经将应用部署在Kubernetes了,因此选择了集群方式的Jenkins部署。主要部署参考...

2019-03-28 17:26:12 6098

原创 Kubernetes多主Master方式部署

背景Kubernetes初学,在集群上测试部署了一套Kuberntes的单Master版本,并在其中部署了我们的一整套微服务,测试环境平稳运行了几个月,期间有些Worker节点也偶尔挂了几次,都没有影响到服务的正常运行,都能快速进行故障迁移,算是尝到了一点甜头。但是在今年年初Master节点由于内存不足出现了故障,却使整个微服务无法正常运作造成的影响巨大。这于之前了解到的情况,即:“maste...

2019-03-28 15:18:09 10369 2

原创 SpringCloud微服务迁移至Kubernetes实践

SpringCloud微服务迁移至Kubernetes实践前言原SpringCloud基础上的微服务已稳定运行近1年,遗留了一些问题不太好处理,如下:客户端侧负载均衡在服务实例故障下线时候,不能及时发现,导致请求到故障实例地址造成请求错误,若增加请求重试配置,对于非幂等接口处理困难。基于SpringCloud Config的配置中心有时候会有不及时刷新svn上的配置信息的情况(需要重新c...

2018-09-18 13:23:23 14615 18

原创 基于SpringCloud微服务的服务平台搭建的一些总结

工作上项目的后台进行微服务改造后已经平稳运行将近1年了,起初项目为若干个单体web应用组成,之后由于上线App,需求的多样性和对于需求的响应速度有了更高的要求,因此为了快速响应需求变化,将后台进行微服务化改造。总的来说,改造初期由于既有系统我都非常熟悉,因此改造和迁移都比较顺利。在微服务架构的帮助下,新接入业务可以更专注于服务的实现,同时各个服务的功能也可以进行快速整合。目前平台的研发告一段落,后...

2018-07-11 16:41:05 7673

原创 经纬度逆编码方法与性能优化

1.需求与即有方案本文需求来源于基础地理信息服务,需要将用户设备采集的经纬度信息转换为所处的行政区域。以往的方式是有以下几种1)直接使用高德web api 中的逆编码方式获取此方法问题在于高度依赖网络调用,难以实现高并发、快速查询。且高德web api有调用次数限制,无法做到无限使用。2)从网络上搜集行政区域数据,并且查询其中心坐标,计算用户传入坐标与中心坐标最近的区域作为逆编码结果此方法的问题在于,数据陈旧,无法有效更新,其次,以中心点坐标距离作为判断依据,对于行政区不规则边界而言,精度

2021-08-03 15:25:56 833

原创 code-server 的Java Web研发环境部署

Code-Server是一种Vs Code 的web部署实现,让用户可以在浏览器内使用Vs Code进行开发。官方Github详见: cdr/code-serverCode-Server默认实现并未带上Java环境等开发必须的软件,因此需要在官方镜像基础上加上其它必要程序和插件。下边简单介绍一下我自己使用的Java Web开发环境的准备方法。主要用于Spring Cloud的微服务应用研发。...

2019-05-24 13:58:17 4869 4

原创 结合Spring Cloud Zuul 与 Kubernetes的灰度发布测试方法

虽然Kubernetes自身支持通过Label改变服务(Service)与应用实例(Endpoint)的对应关系从而做到统一服务的版本区分,但是对于从SpringCloud微服务迁移过来的项目而言,我们的很多配置暂时控制的比较死,况且将灰度版本与生产版本已Namespace的形式分开也有助于更好的资源隔离。因此在已通过Namespace隔离生产与灰度的环境前提下,我们的灰度测试方法说明如下。1...

2019-05-22 18:02:40 1318

原创 Kubernetes中traefik的会话保持和负载均衡策略配置方式

Traefik是一个开源的反向代理工具,在Kubernetes集群内充当Ingress的角色,具有高性能,配置灵活,可根据Kubernetes服务动态配置等优点。官方文档: TraefikTraefik的默认配置为不做会话保持,即同一个用户的请求会在后端应用的不同实例之间切换。对于需要通过Session维持登录状态的服务就会出现登录无效的问题。而Traefik对于其配置教程在官方文档中Kube...

2019-03-28 15:52:13 4281

原创 高级点的 If else: 在Spring中使用责任链

高级点的 If else: 在Spring中使用责任链场景说明背景难点代码说明要点关键代码接口&抽象类具体处理节点举例链条配置注入&使用总结场景说明背景本文的背景: 需要开发一个微信公众号后台,对用户输入的关键词进行相应的回复。如果采用传统的If else,会发现大量的判断分支和业务实现代码混合在同一个类中,在多人开发时候极易出现代码冲突,切代码难以阅读,同时在分支出现调整...

2019-01-15 15:04:35 3400 4

原创 [LeetCode] 一些位操作类的算法

1. 出处 找列表中唯一出现一次的元素 汉明重量/数1出现的次数 汉明距离2. 说明2.1 基本规则从二进制数开始分析有一些有趣的基本操作:乘2: 右移动1位除2: 左移1位0 & 0 = 0, 1 & 0 = 0, 1 & 1 = 0,这个用来处理数1出现的位数,后边会写0 ^ 0 = 0, 1 ^ 0 = 1, 1 ^ 1 ...

2018-08-08 14:33:34 195

原创 [LeetCode] 次幂判断问题

出处3的幂分析找规律来解题,尽量不要有循环这类想法。参考: 如何快速判断一个数是不是2的幂、3的幂、4的幂 的思路。 2的次幂: 二进制位只有一个1: 00000…..100000,减1后为 000000…..0111111。两者相与则为0。因此 n & (n-1) == 0 即可。 4的次幂:4^n = (2^2)^n,1仅在偶数进制位上,那与仅在奇数位上的...

2018-08-08 09:57:29 233

原创 [LeetCode] 计数质数

出处 [计数质数] (https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/25/math/61/)分析方法1: 该题若采用循环方式从1 ~ n 判断每一个是否是质数, 其中判断质数又直接循环3 ~ m 是否能被整除,肯定计算超时。方法2: 1 ~ n 改为 1 ~ sqrt...

2018-08-07 21:58:05 1680

原创 [LeetCode] 二叉搜索树判定

出处 验证二叉搜索树分析 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: - 节点的左子树只包含小于当前节点的数。 - 节点的右子树只包含大于当前节点的数。 - 所有左子树和右子树自身必须也是二叉搜索树。中序遍历即:左中右 并把遍历节点依次放在列表中就能保证列表从小到大排列。因此检验最终的列表即可。结...

2018-08-02 14:17:10 1276

原创 [LeetCode] 列表找唯一(元素或者序号)

出处 只出现一次的数字 字符串中的第一个唯一字符分析关于找唯一,简单使用二重循环会出现超时问题,只能使用别的方式。简单版 建立一个相同长度的数组,标记每个元素是否曾经出现过,如果是标记为true,否则为false。之后遍历这个数组,如果出现false,返回即可。class Solution { public int firstUniqChar(St...

2018-07-31 11:19:12 437

原创 [LeetCode] java的排列与组合C(m,n)、A(m,n)

考题出处: 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 输入: nums = [1,2,3] 输出:[[3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]分析首先 过滤掉重复元素 , 然后从 0 ~ array.length 之间找到所有组合即...

2018-07-30 08:58:01 2017

原创 基于Zookeeper的定时任务应用改造和高可用部署

前言很多应用场景下需要使用定时任务,本文不讨论定时任务的实现,而是讨论在简单的定时任务基础上,如何实现高可用部署。比如有个结账服务在每天0点对前一天的交易进行结账处理,普通的定时任务下可能只能运行一个结账服务实例,否则会结两次帐,但仅部署一个实例则不能保证结账服务的稳定运行。为解决这个问题比较合适的方式是将这个计算加入工作流(airflow、XXL-job等),如果是新增业务来说比较合适,...

2018-07-24 16:08:30 4470 5

原创 进一步优化SPA的首屏打开速度(模块化与懒加载) by 嗡

前言单页应用的好处在于一次载入所有页面资源,利用本地计算能力渲染页面,提高页面切换速度与用户体验。但缺点在于所有页面资源将被一次性下载完,此时封装出来的静态资源包体积较大,使得第一次打开SPA页面时候需要的载入时间较长。在上一篇文章Angular2 单页应用一些优化总结 中提到的利用压缩、混淆、开启gzip传输后,我们成功将3.5兆的资源包压缩到350k。但是如果SPA应用的页面数进一步增加,100

2017-04-01 10:05:30 8675

原创 小程序的会话保持

小程序的HTTP请求全部使用wx.request({})方法,但是该方法每次都会产生一个新的会话,因此在特定使用场景(安全验证、session保存、CSRF保护)等方面会遇到一些麻烦。比如csrf保护的应用中,即使上次拿到csrf,再下一次请求中又会失效。解决方法step 1: 获取sessionId以及csrf并保存已获取csrf为例,简单粗暴,在应用启动时候()可以在onLaunch时候)获取第

2017-03-30 09:38:29 10252

原创 嗡汤圆的Angular2 单页应用一些优化总结

前言初学Angular2后很容易被它简洁清晰的思路,方便的开发环境和开发套件所吸引。但是真正考虑生产开发的时候,总是有些不那么美好的东西。所以,在这里总结一下一些最初级、最简单粗暴的优化步骤。启动时间优化开启生产压缩与预编译由于Angular2正处于发展,刚刚稳定下来的阶段,网上的一些教程,甚至包括官方的教程都有点跟不上脚步(比如官方的AOT预编译教程,貌似还有些错误)。好在开发套件angular-

2017-03-21 10:46:20 5837

原创 SpringSecurity自定义登录接口 & Angular2的安全路由

在配置SpringSecurity的项目中,通过配置.authorizeRequests().antMathers("/path/**",....) 来设置哪些路径需要用户权限,哪些可以不登录浏览。但是如果在该项目中部署了Angular2单页应用的话,由于对SpringSecurity来说仅在第一次进入Angular2应用时经过了Security拦截,之后所有的页面跳转均在Angular2的路由管理

2017-03-01 08:58:50 7344 3

原创 Angular2 单页应用的编写 by 嗡

单页应用的特点优势劣势程序编写开发环境新建项目主要概念Componentcomponenttscomponenthtmlcomponentts和componenthtml的关联和绑定数据和行为路由路由的声明路由实例服务实例将路由跳转封装为服务step1 建立服务step2实现服务方法step3在appmodulets中引入服务step4在component中注入

2017-02-19 11:29:07 2972

原创 SpringBoot Web/API的通用异常处理[嗡汤圆的小笔记]

view的异常处理SpringBoot Web项目中对于view的默认错误信息页如下: 并不十分友好,因此需要对异常进行自定义处理,步骤如下:建立@ControllerAdvice Bean。并分别为各异常类制定处理方式。为简单起见,本处仅对Exception(500错误)和NoHandlerFoundException(即404错误)进行处理设置ServletDispatcher,允许404

2017-01-18 12:09:10 2008

原创 SpringBoot应用多数据源支持[嗡汤圆的小笔记]

在某些应用场景中,SpringBoot应用可能需要同时连接多个数据源(同类型或不同类型数据库)进行数据处理和写入操作。下文将配置多数据源(两个Postgres数据库)为例进行说明。 其中: * 数据库-1维护表1,表3 * 数据库-2维护表2,表3 * 分别说明如何分别往表1,表2(各库独占表)写数据,以及分别往数据库-1的表3、数据库-2的表3写入不同的数据。1、项目搭建基础步骤,在sta

2016-12-30 20:22:39 1879 1

原创 Spring在Thread中注入Bean无效的解决方式[嗡汤圆的小笔记]

在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务。而通过Spring注入来管理和使用服务是较为合理的方式。但是若直接在Thread子类中通过注解方式注入Bean是无效的。因为Spring本身默认Bean为单例模式构建,同时是非线程安全的,因此禁止了在Thread子类中的注入行为,因此在Thread中直接注入的bean是null的,会发生空指针错误。以下分别列举错误

2016-12-28 18:11:41 12032 4

原创 搭建Redis主从集群搭建、redis-sentinel的配置以及Jedis对Sentinel的使用[ by 嗡汤圆 ]

前言某web项目中需要快速存取部分非结构化数据,对数据的安全性要求不高,同时由于web项目有多台服务器同时提供服务,并通过nginx负载均衡,需要保证客户端从任意一台服务器中均能读取到完整的数据。因此不能简单的在每台服务器中安装redis缓存,同时为避免单点故障,需要部署多台redis服务组成主从集群,而默认的主从配置仅仅保证了数据的复制与安全,并没有提供节点失败时的请求转移,因此需要配合re

2016-10-31 18:58:44 6863 3

原创 嗡汤圆的Spring Cloud自学(综合):可以计算加减乘除的分布式计算平台~

说明该平台唯一的功能就是提供两个数的加减乘除功能,但综合运用了该系列博客的前三篇内容:使用spring-config记录加减乘除的标志位定义:plus,minus,times,div。使用eureka管理服务建立一个计算服务项目,提供加减乘除的计算功能建立一个API代理进行负载均衡处理和API熔断处理建立一个hystrix-dashboard提供接口熔断监控平台建立的方式和代码实现不再详

2016-10-15 15:48:22 1237

原创 嗡汤圆的Spring Cloud自学(PART.3):API熔断与监控(hystrix)

前言结合上篇博客”嗡汤圆的Spring Cloud自学(PART.2):eureka服务注册与代理端使用” 中API服务代理的使用,我们将用户请求交由代理完成API调用以及后端的负载均衡。 同时,通过代理,我们也可以很方便的将后端的异常捕获并处理。比如发生后端API错误,或者后端无可用的微服务的情况时的异常处理,我们称之为API熔断(Circuit Break),起到保护客户端与代理间程序正常运行

2016-10-13 21:59:47 5730

原创 嗡汤圆的Spring Cloud自学(PART.2):eureka服务注册与代理端使用

前言传统的微服务的调用一般是直接再客户端发送请求到微服务的地址和端口进行调用,或者当微服务有多个副本时,通过配置nginx反向代理进行负载均衡。 客户端直接调用: 或者nginx负载: 以上两种情况均需要手动维护微服务的应用地址和端口,不易于微服务集群维护,当微服务出错或者关闭时,可能引起服务异常。 因此,若可以让微服务在启动后自行在一个地方注册,并统一管理微服务地址则省去了手

2016-10-12 23:09:55 1638

原创 嗡汤圆的Spring Cloud自学(PART.1):统一配置管理(Cloud-config)

前言Spring cloud是较为完善的分布式微服务框架,网上教程数量较少,所以我就去油管上找了找,找到一个1小时多的视频,会翻的可以自行去看看 “Getting Started with Spring Cloud” 。里边的大牛讲的挺有意思的,而且是当场构建项目,编写代码并演示。 但是如果英文不好,或者没有耐心看视频的同学,可以看看这篇博客(接下来还会陆续更新Spring Cloud自学系列),

2016-10-11 22:48:17 1678

原创 观察者模式小练习:多日志监控 by 嗡汤圆

想写给小工具包用来在web项目中提供试试查看日志输出的功能。以下仅仅是小练手。 具体特性如下: 1. 观察者模式实现 2. 任意多文件实时捕获输出 3. 多用户查看同一文件时,维持单一读取线程,保证IO效率说明若想简单实现查看某文件的变化,只要写个循环一直读取就好了,但是这样会造成一个问题:用户少的情况下,少数线程循环读取文件速度变化不明显,若用户数量增多则会出现性能问题。即使假设有1000

2016-08-13 01:10:11 1430

原创 写在毕业之后

几天前,我正在办公室里敲代码,电话响起,接到老师的一个任务,写写研究生这三年的一些让我映像深刻事情,没多想就答应了。然而,现在是周日下午4点,我看着屏幕上的光标跳动了1个小时,仍然不知道该如何敲下第一个按键。一来,自从高考后除了八股和论文,就没有怎么像模像样地动笔写过文字;二来,一直以为生活就像一股自由流淌的水流,你只知道自己要去的方向,在一些地方积淀,在一些地方拐弯,很自然的事情,但要回头看看自

2016-07-31 19:04:13 562

原创 基于口令和证书认证(TrueLicense)的接口调用工具库的封装设计 By 嗡汤圆

需求接口使用者无需知道接口地址和传输实现,仅需知道传入参数和传出传出数据的结构。接口使用者必须拥有合法的用户名、口令以及证书。接口使用者的项目中必须包含颁发给该使用者的证书,才能正常使用接口。接口使用者通过口令和证书认证后获取到Token,然后通过Token调用其它功能接口。

2016-07-28 17:42:28 5382

原创 嗡汤圆的Docker自学笔记以及应用部署实例

该自学内容主要来源于视频列表:Docker Tutorials基础知识Docker特性 Dock不是虚拟机!Dock不是虚拟机!Dock不是虚拟机! docker构建在操作系统上,利用操作系统的containerization技术,消耗资源小,轻量,可以瞬间启动完毕。我们可以启动一个装有Nginx的dockerdocker run -d nginx然后在分别在Docker和宿主机上运行p

2016-07-25 14:47:20 3446 3

原创 如何在SpringMVC项目中部署WebService服务并打包生成客户端

场景某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务。其中WebService服务通过 /ws/** 地址拦截。配置通过配置让SpringMVC支持WebService。

2016-07-18 08:30:24 19896

原创 Linux如何自动挂载U盘

某些场景下,服务器可能没有必要的键盘等输入设备、屏幕等输出设备。此时需要在没有人为干预的情况下实现当插入U盘或者硬盘后自动挂载,并执行某些脚本动作。以下是我的实践过程。必要组件udev,udisksbusybox (需要用到blkid)可以直接获取到设备的卷标,这样就可以指定挂载路径名称了。实现规则编写编写udev规则实现U盘插入时候的动作。规则文件写在/etc/udev/rules.d 下。

2016-06-24 17:48:36 10115 2

生命游戏C#

简单的元胞自动机模型,可以自定义矩阵大小,演算步数,可以鼠标手动绘制初始图形。

2013-04-28

空空如也

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

TA关注的人

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