使用java获取当前是星期几

有个小需求,获取今天是周几,想我大java,获取一个星期几不是手到擒来。

第一想法,System.currentTimeMillis(),这是个时间戳,还得处理秒数,太麻烦。

第二想法,new Date() deprecated?  好吧。

第三想法,Calendar,简单写下代码,开始调试

weekDay = 3,wtf?今天是周二,怎么给了我一个3,只听说过从0、1计数,没听说过从2开始计数的啊!

继续查

国际上是以星期日为一周第一天的开始,Calendar中提供的DAY_OF_WEEK获取的一周也是以星期日作为一周的开始。

而中国的习惯是以星期一作为一周的开始,所以需要根据项目的实际需求来设置。

好吧,真是人生处处皆学问,写代码还能学知识。

怎么办呢?Calendar有个api叫setFirstDayOfWeek,原来从哪一天开始是可以设置的,java也是蛮人性化的么~

继续调试

weekDay = 3

这就有点意思了,这个api是用来看的么? 继续查

官方文档一大堆,概括为:

setFirstDayOfWeek的方法意思只对WEEK_OF_MONTH WEEK_OF_YEAR 有作用.

WEEK_OF_MONTH :当前Calendar日期对象是当前月的第几周.

WEEK_OF_YEAR :当前Calendar 日期对象是当前年的第几周.

好吧,老老实实写下比较丑陋的代码

ubuntu 16.04规避srsLTE报告”Sequence number synch failure“的BUG

参考ubuntu 16.04系统LimeSDR使用srsLTE搭建LTE实验环境构建实验环境,在实际运行时候,手机设备无法正常连接到基站,报告如下错误信息:

初步分析BUG的原因是如下函数在重新生成同步序列号的时候出现错误:

目前还在分析,目前出现这个现象的时候,当EPC退出时候,应用一定向user_db.csv回写000000001b02,一旦出现这个数字,我们就没办法注册设备了。

目前的应对办法是把user_db.csv最后的SQN,要比设备最后一次通信记录的数据号大,如果SQN数字复位,可以让设备关机,应该就从0开始了。此问题还在持续跟进中。

OS X EI Caption(10.11.6)通过SSH启用VNC远程桌面

家里的一台Mac mini(Early 2009)安装了OS X EI Caption系统,启用了SSHVNC远程桌面。但是在某次系统更新的时候,由于涉及到Remote Desktop Client的更新,导致无法正常登录VNC远程桌面,但是可以正常使用SSH登录。

则使用如下命令重新启用VNC远程桌面服务:

如果需要关闭VNC远程桌面服务,则使用如下命令:

参考链接


How to enable OS X screen sharing (VNC) through SSH?

ubuntu 16.04用HackRF和Gqrx来听FM广播

继续阅读ubuntu 16.04用HackRF和Gqrx来听FM广播

srsLTE使用LimeSDR代码分析PHY层流程

数据接收流向


RF处理线程

lib/src/phy/rf/rf_soapy_imp.c
int rf_soapy_recv_with_time(void *h,
void *data,
uint32_t nsamples,
bool blocking,
time_t *secs,
double *frac_secs)

->

 lib/src/phy/rf/rf_dev.h
int (*srslte_rf_recv_with_time)(void *h, void *data, uint32_t nsamples,
bool blocking, time_t *secs,double *frac_secs)

->

lib/src/radio/radio_multi.cc

bool rx_now(cf_t *buffer[SRSLTE_MAX_PORTS], uint32_t nof_samples, srslte_timestamp_t* rxd_time)

->

srsenb/src/phy/txrx.cc
void run_thread() 接收完成后,触发信号,通知后续线程,也就是后面的发送接收线程。

eNB收发处理线程

srsenb/src/phy/phch_worker.cc
void work_imp();

->

srsenb/src/phy/phch_worker.cc
void srslte_enb_ul_fft(srslte_enb_ul_t *q)

填充关键的srslte_enb_ul_t->sf_symbols,这个指针在 int srslte_ofdm_rx_init(srslte_ofdm_t *q, srslte_cp_t cp_type, cf_t *in_buffer,cf_t *out_buffer,uint32_t max_prb)函数中被赋值,被共享,因此后面会不好理解何时srslte_enb_ul_t->sf_symbols被赋值

另外就是关注 int srslte_enb_ul_init(srslte_enb_ul_t *q,cf_t *in_buffer,uint32_t max_prb)中对于signal_buffer_rx的共享方式,也能解释后面的不需要拷贝内存的操作,主要就是指针被共享了。

srsenb/src/phy/phch_worker.cc
int decode_pucch()

->

lib/src/phy/enb/enb_ul.c
int srslte_enb_ul_get_pucch(srslte_enb_ul_t *q, uint16_t rnti,
uint32_t pdcch_n_cce, uint32_t sf_rx,
srslte_uci_data_t *uci_data)

->

lib/src/phy/enb/enb_ul.c
int get_pucch(srslte_enb_ul_t *q, uint16_t rnti,
uint32_t pdcch_n_cce, uint32_t sf_rx,
srslte_uci_data_t *uci_data, uint8_t bits[SRSLTE_PUCCH_MAX_BITS], uint32_t nof_bits)

->

lib/src/phy/phch/pusch.c
int srslte_pusch_decode(srslte_pusch_t *q,
srslte_pusch_cfg_t *cfg, srslte_softbuffer_rx_t *softbuffer,
cf_t *sf_symbols,
cf_t *ce, float noise_estimate, uint16_t rnti,
uint8_t *data, srslte_cqi_value_t *cqi_value, srslte_uci_data_t *uci_data)

->

lib/src/phy/modem/demod_soft.c
int srslte_demod_soft_demodulate_s(srslte_mod_t modulation, const cf_t* symbols, short* llr, int nsymbols)(QPSK解码